#include <stdio.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>
#include <time.h>
#include <stdlib.h>
#include <string.h>

enum Color{
   RED = 0x00ff0000, //红色
   GREEN = 0x0000ff00, //绿色
   BLACK = 0x00000000, //黑色
   WHITE = 0x00ffffff, //白色
   BLUE = 0x000000ff, //蓝色
   YELLOW = 0x00ffff00, //黄色
   
};

int main()
{
    //1、打开液晶屏驱动文件 
    int lcdFd = open("/dev/fb0",O_RDWR);
    if(lcdFd == -1)
    {
        perror("open lcd error");
        return -1;
    }
#if 0
    //2、将像素点数据写入液晶屏文件中 ---往液晶屏设备中填充像素点
    //int color = GREEN; //一个像素点
    int buf[800*480] = {0};
    for(int i=0; i<800*480; i++)
    {
        if(i<800*480/3)
        {
            buf[i] = BLACK;
        }
        else if(i>=800*480/3 && i<800*480/3*2)
        {
            buf[i] = RED;
        }
        else
        {
            buf[i] = YELLOW;
        }
    }

    
    write(lcdFd,buf,800*480*4);
#endif 

#if 0
    //将德国国旗竖起来
    int buf[480][800]   = {0};
    //一共有480行
    for(int j=0; j<480; j++)
    {
        for(int i=0; i<800; i++)
        {
            if(i<800/3)
            {
                buf[j][i] = BLACK;
            }
            else if(i >= 800/3 && i < 800/3 * 2)
            {
                buf[j][i] = RED;
            }
            else{
                buf[j][i] = YELLOW;
            }
        }
    }

     write(lcdFd,buf,800*480*4);
#endif 

#if 1
    //将德国国旗竖起来
    int buf[480*800]   = {0};
    for(int j=0; j<480; j++)
    {
        for(int i=0; i<800; i++)
        {
            if(i<800/3)
                buf[j*800+i] = BLACK;
            else if(i >= 800/3 && i < 800/3 * 2)
                buf[j*800+i] = RED;
            else 
                buf[j*800+i] = YELLOW;
        } 
    }

    write(lcdFd,buf,800*480*4);

#endif 


    //3、关闭液晶屏文件
    close(lcdFd);
}